﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using DTO;
namespace DAO
{
    public class BanAnDAO
   {
        // Cập nhập trạng thái bàn ăn là "Đang Bận"
        public void CapNhatTrangThaiBanAn(int ID_BAN_AN,int KEY_CODE)
        {
               
                // Tạo Kết Nối CSDL
                SqlConnection myCONN = DataProvider.ConnectDB();

                //Viết Câu Lệnh SQL
                string mySQL = "";
                if(KEY_CODE == 1)
                {
                    mySQL = "update BANAN set Tinh_Trang_Ban_An=1 WHERE Id_Ban_An=@ID_BAN_AN";
                }
                else if(KEY_CODE == 0)
                {
                    mySQL = "update BANAN set Tinh_Trang_Ban_An=0 WHERE Id_Ban_An=@ID_BAN_AN";
                }
                

                // Thực hiện truy vấn
                SqlCommand cmd = new SqlCommand(mySQL, myCONN);
                SqlParameter para = cmd.Parameters.Add("@ID_BAN_AN", System.Data.SqlDbType.Int, -1);
                para.Value = ID_BAN_AN;
                // Lấy dữ liệu từ kết quả truy vấn
                cmd.ExecuteReader();

                // Đóng kết nối CSDL
                myCONN.Close();

        }  
       public List<BanAnDTO> DanhSachBanAnTheoKhuVuc(int Id_Khu_Vuc)
       {
           // Tạo Kết Nối CSDL
           SqlConnection myCONN = DataProvider.ConnectDB();

           //Viết Câu Lệnh SQL
           string mySQL = "SELECT Id_Ban_An,Id_Khu_Vuc,Ten_Ban_An FROM BANAN WHERE Id_Khu_Vuc = " + Id_Khu_Vuc;

           // Thực hiện truy vấn
           SqlCommand cmd = new SqlCommand(mySQL, myCONN);

           // Lấy dữ liệu từ kết quả truy vấn
           SqlDataReader reader = cmd.ExecuteReader();

           // Đổ dữ liệu vào danh sách đối tượng Khu Vực
           List<BanAnDTO> listBADTO = new List<BanAnDTO>();
           while (reader.Read())
           {
               BanAnDTO singleRecord = new BanAnDTO();
               singleRecord.Id_Ban_An = reader.GetInt32(0);
               singleRecord.Id_Khu_Vuc = reader.GetInt32(1);
               singleRecord.Ten_Ban_An = reader.GetString(2);
               listBADTO.Add(singleRecord);
           }

           // Đóng kết nối CSDL
           myCONN.Close();

           // Trả kết quả
           return listBADTO;
       }
       public List<BanAnDTO> DanhSachBanAnTheoKhuVucConTrong(int Id_Khu_Vuc)
       {
           // Tạo Kết Nối CSDL
           SqlConnection myCONN = DataProvider.ConnectDB();

           //Viết Câu Lệnh SQL
           string mySQL = "SELECT Id_Ban_An,Id_Khu_Vuc,Ten_Ban_An FROM BANAN WHERE Tinh_Trang_Ban_An=0 AND Id_Khu_Vuc = " + Id_Khu_Vuc;

           // Thực hiện truy vấn
           SqlCommand cmd = new SqlCommand(mySQL, myCONN);

           // Lấy dữ liệu từ kết quả truy vấn
           SqlDataReader reader = cmd.ExecuteReader();

           // Đổ dữ liệu vào danh sách đối tượng Khu Vực
           List<BanAnDTO> listBADTO = new List<BanAnDTO>();
           while (reader.Read())
           {
               BanAnDTO singleRecord = new BanAnDTO();
               singleRecord.Id_Ban_An = reader.GetInt32(0);
               singleRecord.Id_Khu_Vuc = reader.GetInt32(1);
               singleRecord.Ten_Ban_An = reader.GetString(2);
               listBADTO.Add(singleRecord);
           }

           // Đóng kết nối CSDL
           myCONN.Close();

           // Trả kết quả
           return listBADTO;
       }
       // Thêm 1 Bàn Ăn
       public int ThemBanAn(BanAnDTO banAn)
       {
           // Tạo Kết Nối CSDL
           SqlConnection myCONN = DataProvider.ConnectDB();

           //Viết Câu Lệnh SQL
           string mySQL = "insert into BANAN(Id_Khu_Vuc,Ten_Ban_An,Tinh_Trang_Ban_An) values (@IdKhuVuc,@TenBanAn,'0')";

           // Thực hiện truy vấn
           SqlCommand cmd = new SqlCommand(mySQL, myCONN);
           SqlParameter para = cmd.Parameters.Add("@IdKhuVuc", System.Data.SqlDbType.Int, -1);
           para.Value = banAn.Id_Khu_Vuc;
           para = cmd.Parameters.Add("@TenBanAn", System.Data.SqlDbType.VarChar, -1);
           para.Value = banAn.Ten_Ban_An;
           // Lấy dữ liệu từ kết quả truy vấn
           int kq;
           try
           {
               kq = cmd.ExecuteNonQuery();
           }
           catch (Exception ex)
           {
               return 0;
           }
           // Đóng kết nối CSDL
           myCONN.Close();
           return 1;

       }
       public BanAnDTO LayBanAn(int id)
       {
           SqlConnection conn = DataProvider.ConnectDB();
           string sql = @"select Id_Khu_Vuc,Ten_Ban_An,Tinh_Trang_Ban_An from BANAN where Id_Ban_An='" + id + "'";
           SqlCommand cmd = new SqlCommand(sql, conn);
           SqlDataReader reader = cmd.ExecuteReader();
           reader.Read();
           BanAnDTO banan = new BanAnDTO();
           banan.Id_Ban_An = id;
           banan.Id_Khu_Vuc = reader.GetInt32(0);
           banan.Ten_Ban_An = reader.GetString(1);
           banan.Tinh_Trang = reader.GetInt32(2);
           conn.Close();
           return banan;
       }
       public bool CapNhatBanAn(int id, string ten, int id_khu_vuc)
       {
           SqlConnection conn = DataProvider.ConnectDB();
           SqlTransaction transaction = conn.BeginTransaction();
           try
           {
               string sql = "update BANAN set Ten_Ban_An='" + ten + "',Id_Khu_Vuc='" + id_khu_vuc + "' where Id_Ban_An='" + id + "' ";
               SqlCommand cmd = new SqlCommand(sql, conn);
               cmd.Transaction = transaction;
               cmd.ExecuteNonQuery();
               transaction.Commit();
               return true;
           }
           catch
           {
               transaction.Rollback();
               //throw new Exception("Lôi update "+error.Message);
               return false;
           }

       }  
        // Lấy Danh Sách Bàn Ăn
        public List<BanAnDTO> DanhSachBanAn()
        {
            // Tạo Kết Nối CSDL
            SqlConnection myCONN = DataProvider.ConnectDB();

            //Viết Câu Lệnh SQL
            string mySQL = "SELECT Id_Khu_Vuc,Ten_Ban_An,Id_Ban_An,Tinh_Trang_Ban_An FROM BANAN ORDER BY Id_Khu_Vuc,Ten_Ban_An ";

            // Thực hiện truy vấn
            SqlCommand cmd = new SqlCommand(mySQL, myCONN);

            // Lấy dữ liệu từ kết quả truy vấn
            SqlDataReader reader = cmd.ExecuteReader();

            // Đổ dữ liệu vào danh sách đối tượng Khu Vực
            List<BanAnDTO> listBADTO = new List<BanAnDTO>();
            while (reader.Read())
            {
                BanAnDTO singleRecord = new BanAnDTO();
                singleRecord.Id_Khu_Vuc = reader.GetInt32(0);
                singleRecord.Ten_Ban_An = reader.GetString(1);
                singleRecord.Id_Ban_An = reader.GetInt32(2);
                singleRecord.Tinh_Trang = reader.GetInt32(3);
                listBADTO.Add(singleRecord);
            }

            // Đóng kết nối CSDL
            myCONN.Close();

            // Trả kết quả
            return listBADTO;
        }
        // Xóa Tất Cả Dữ Liệu 
        public void XoaTatCa()
        {
            // Tạo Kết Nối CSDL
            SqlConnection myCONN = DataProvider.ConnectDB();

            //Viết Câu Lệnh SQL
            string mySQL = "DELETE FROM BANAN ";

            // Thực hiện truy vấn
            SqlCommand cmd = new SqlCommand(mySQL, myCONN);

            // Thực hiện câu truy vấn
            cmd.ExecuteReader();

            // Đóng kết nối CSDL
            myCONN.Close();
        }
        // Thêm Bàn Ăn
        public void ThemBanAnVoiIDTung(BanAnDTO banAn,int ID)
        {
            // Tạo Kết Nối CSDL
            SqlConnection myCONN = DataProvider.ConnectDB();

            //Viết Câu Lệnh SQL
            string mySQL = "SET IDENTITY_INSERT BANAN ON INSERT INTO BANAN(Id_Ban_An,Id_Khu_Vuc,Ten_Ban_An,Tinh_Trang_Ban_An) VALUES(" + ID + ",@IDKhuVuc,@TenKhuVuc,0)";

            // Thực hiện truy vấn
            SqlCommand cmd = new SqlCommand(mySQL, myCONN);
            SqlParameter para;
            // Add Id_Khu_Vuc
            para = cmd.Parameters.Add("@IDKhuVuc", System.Data.SqlDbType.Int);
            para.Value = banAn.Id_Khu_Vuc;
            // Add Ten_Khu_Vuc
            para = cmd.Parameters.Add("@TenKhuVuc", System.Data.SqlDbType.VarChar);
            para.Value = banAn.Ten_Ban_An;
            // Thực hiện câu truy vấn
            cmd.ExecuteReader();

            // Đóng kết nối CSDL
            myCONN.Close();
        }
        // Xóa Bàn Ăn
        // Xóa Bàn Ăn
        public void XoaBanAn(int ID_Ban_An)
        {
            // Tạo Kết Nối CSDL
            SqlConnection myCONN = DataProvider.ConnectDB();

            //Viết Câu Lệnh SQL
            string mySQL = "DELETE FROM BANAN WHERE Id_Ban_An = @ID_Ban_An ";

            // Thực hiện truy vấn
            SqlCommand cmd = new SqlCommand(mySQL, myCONN);
            SqlParameter para = cmd.Parameters.Add("@ID_Ban_An", System.Data.SqlDbType.Int, -1);
            para.Value = ID_Ban_An;

            cmd.ExecuteReader();


        }

    }
}
